import openpyxl
import re

# 加载 Excel 文件
workbook = openpyxl.load_workbook(r'D:\Windows\汝湖镇清单.xlsx')
excelFileName = "工作簿11"
sheet = workbook.active
excelPyLine = 'j'  # 写入列

# 初始化中文数字数组、方向字符数组和其他字符数组
chinese_digits_list = []
direction_chars_list = []
other_chars_list = []

# 遍历 B 列的单元格
for cell in sheet['C']:
    # 获取单元格的值
    value1 = cell.value
    if value1 is not None:
        # # 剪切字符串，保留最后四位
        # value = cell.value[-4:]
        # # 使用正则表达式匹配中文数字和方向字符
        # chinese_digits = re.findall(r'(?:[零一二三四五六七八九十]+)+', value)
        # direction_chars = re.findall(r'[东南西北]', value)
        #
        # # 将中文数字添加到数组，如果没有获取到则添加 None
        # if chinese_digits:
        #     chinese_digits_list.append(chinese_digits[-1])
        # else:
        #     chinese_digits_list.append(None)
        # # 将方向字符添加到数组，如果没有获取到则添加 None
        # if direction_chars:
        #     direction_chars_list.append(direction_chars[-1])
        # else:
        #     direction_chars_list.append(None)
        #
        # # 获取中文数字在单元格中的位置
        # if chinese_digits:
        #     index = value1.find(chinese_digits[-1])
        #     # 获取中文数字前的所有字符
        #     other_chars_list.append(value1[:index])
        # else:
        #     other_chars_list.append(value1[0])
        # 使用正则表达式匹配整个单词
        match = re.search(r'\b.+\b', value1)
        if match:
            # 获取匹配到的整个单词
            word = match.group()
            # value = cell.value[-4:]
            # 使用正则表达式匹配中文数字和方向字符
            chinese_digits = re.findall(r'(?:[零一二三四五六七八九十]+)+', word)
            direction_chars = re.findall(r'[东南西北]', word)

            # 将中文数字添加到数组，如果没有获取到则添加 None
            if chinese_digits:
                chinese_digits_list.append(chinese_digits[-1])
            else:
                chinese_digits_list.append(None)

            # 将方向字符添加到数组，如果没有获取到则添加 None
            if direction_chars:
                direction_chars_list.append(direction_chars[-1])
            else:
                direction_chars_list.append(None)

            # 获取中文数字在单元格中的位置
            if chinese_digits:
                index = word.find(chinese_digits[-1])
                # 获取中文数字前的所有字符
                other_chars_list.append(word[:index])
            else:
                other_chars_list.append(word[:-1])
        else:
            # 如果匹配不到整个单词，则将单元格的值作为其他字符
            other_chars_list.append(value1)


# 写入 K 列的数据
for i, (other_chars, direction_chars, chinese_digits) in enumerate(
        zip(other_chars_list, direction_chars_list, chinese_digits_list), start=2):
    # 如果 B 列单元格存在中文数字和方向字符
    if direction_chars and chinese_digits:
        value = f'因途径{other_chars}侧小组，且按序数排第{chinese_digits}，故名'
    # 如果只有中文数字
    elif chinese_digits:
        value = f'因地理位置位于{other_chars}小组，且按序数排第{chinese_digits}，故名'
    else:
        value = f'因地理位置位于{other_chars}小组，故名'

    # 写入 K 列
    sheet[f'{excelPyLine}{i}'] = value
# 保存 Excel 文件
workbook.save(rf'D:\Windows\{excelFileName}.xlsx')
